# -*- coding:utf-8 -*-
# @Author: komeiji satori
from sanic import (
    Sanic,
    request,
    response
)

# 创建一个 Sanic 实例对象, Sanic 是 web 服务的入口类, 它等价于 flask.Flask
# 然后里面传递一个字符串, 为我们的应用起一个名字
app = Sanic("sanic_service")

# 这里通过 @app.get("路由") 的方式和一个视图函数进行绑定
# 视图函数中的 request 参数会接收一个 sanic.request.Request 实例对象, 它包含了接收到的请求中的所有信息
# 比如我们想获取 url 中的查询参数, 那么就需要通过这里的 request 获取, 这个参数在请求到来时会自动传递
@app.get("/index")
async def index(request: request.Request):
    # 这个参数我们暂时先不用, 但是一定要有
    # 这里直接返回一个字符串
    return response.text("hello world")


# 无论使用哪种方法(CLI 或模块），都再不应该在 Python 文件中调用 app.run()。
# 如果您想调用该方法，请确认将其包装起来，使它只有在使用解释器运行文件时才会被执行。
if __name__ == '__main__':
    # host: 监听的IP, port: 监听的端口, auto_reload: 修改代码之后是否自动重启
    app.run(host="127.0.0.1", port=8888)